<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
	<title>keyword(关键词)数据类型 | ElasticSearch 7.7 权威指南中文版</title>
	<meta name="keywords" content="ElasticSearch 权威指南中文版, elasticsearch 7, es7, 实时数据分析，实时数据检索" />
    <meta name="description" content="ElasticSearch 权威指南中文版, elasticsearch 7, es7, 实时数据分析，实时数据检索" />
    <!-- Give IE8 a fighting chance -->
    <!--[if lt IE 9]>
    <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
	<link rel="stylesheet" type="text/css" href="../static/styles.css" />
	<script>
	var _link = 'keyword.html';
    </script>
</head>
<body>
<div class="main-container">
    <section id="content">
        <div class="content-wrapper">
            <section id="guide" lang="zh_cn">
                <div class="container">
                    <div class="row">
                        <div class="col-xs-12 col-sm-8 col-md-8 guide-section">
                            <div style="color:gray; word-break: break-all; font-size:12px;">原英文版地址: <a href="https://www.elastic.co/guide/en/elasticsearch/reference/7.7/keyword.html" rel="nofollow" target="_blank">https://www.elastic.co/guide/en/elasticsearch/reference/7.7/keyword.html</a>, 原文档版权归 www.elastic.co 所有<br/>本地英文版地址: <a href="../en/keyword.html" rel="nofollow" target="_blank">../en/keyword.html</a></div>
                        <!-- start body -->
                  <div class="page_header">
<strong>重要</strong>: 此版本不会发布额外的bug修复或文档更新。最新信息请参考 <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html" rel="nofollow">当前版本文档</a>。
</div>
<div id="content">
<div class="breadcrumbs">
<span class="breadcrumb-link"><a href="index.html">Elasticsearch 权威指南 [7.7]</a></span>
»
<span class="breadcrumb-link"><a href="mapping.html">映射</a></span>
»
<span class="breadcrumb-link"><a href="mapping-types.html">字段数据类型</a></span>
»
<span class="breadcrumb-node">keyword(关键词)数据类型</span>
</div>
<div class="navheader">
<span class="prev">
<a href="parent-join.html">« join(联结)数据类型</a>
</span>
<span class="next">
<a href="nested.html">nested(嵌套)数据类型 »</a>
</span>
</div>
<div class="section">
<div class="titlepage"><div><div>
<h2 class="title">
<a id="keyword"></a>keyword(关键词)数据类型
</h2>
</div></div></div>

<p>一种索引结构化内容的字段，如 ID、电子邮件地址、主机名、状态码、邮政编码或标签。</p>
<p>
它们通常用于过滤(比如，<em>查找 <code class="literal">status</code>(状态) 为<code class="literal">published</code>的所有博客帖子</em>)、排序和聚合。

keyword 字段只能通过它们的确切值进行搜索。
</p>
<p>
如果你需要索引全文内容，如电子邮件正文或产品描述，你可能更愿意使用<a class="xref" href="text.html" title="text数据类型" rel="nofollow"><code class="literal">text</code></a>字段。
</p>
<p>下面是一个是 keyword 字段的映射示例：</p>
<div class="pre_wrapper lang-console">
<pre class="programlisting prettyprint lang-console">PUT my_index
{
  "mappings": {
    "properties": {
      "tags": {
        "type":  "keyword"
      }
    }
  }
}</pre>
</div>
<div class="console_widget" data-snippet="snippets/670.console"></div>
<div class="tip admon">
<div class="icon"></div>
<div class="admon_content">
<h3>映射数值型标识</h3>
<p>
并非所有数值数据都应映射为<a class="xref" href="number.html" title="numeric数据类型" rel="nofollow">数值型</a>字段数据类型。

Elasticsearch 为<a class="xref" href="query-dsl-range-query.html" title="范围查询"><code class="literal">范围(range)</code></a>查询优化数值型字段，如<code class="literal">integer</code>或<code class="literal">long</code>。

但是，<code class="literal">keyword</code>字段更适合于<a class="xref" href="query-dsl-term-query.html" title="term 查询"><code class="literal">term</code></a>和其他<a class="xref" href="term-level-queries.html" title="词级查询">词级</a>查询。
</p>
<p>
标识(identifier)，如 ISBN 或产品ID，很少在<code class="literal">范围(range)</code>查询中使用。

但是，通常使用词级查询来检索它们。
</p>
<p>在以下情况下，考虑将数值型标识映射为<code class="literal">keyword</code>：</p>
<div class="ulist itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
你不打算使用<a class="xref" href="query-dsl-range-query.html" title="范围查询"><code class="literal">range</code></a>查询来搜索标识数据。
</li>
<li class="listitem">
快速检索很重要。

<code class="literal">keyword</code>字段上的<code class="literal">term</code>查询搜索通常比数值型字段上的<code class="literal">term</code>搜索更快。
</li>
</ul>
</div>
<p>
如果你不确定应该使用哪一种，可以使用<a class="xref" href="multi-fields.html" title="fields">多字段(multi-field)</a>将数据映射为<code class="literal">keyword</code><em>和</em>数值型数据类型。
</p>
</div>
</div>
<div class="section">
<div class="titlepage"><div><div>
<h3 class="title">
<a id="keyword-params"></a>keyword字段的参数
</h3>
</div></div></div>
<p><code class="literal">keyword</code>字段接受以下参数：</p>
<div class="informaltable">
<table border="0" cellpadding="4px">
<colgroup>
<col>
<col>
</colgroup>
<tbody valign="top">
<tr>
<td valign="top">
<p>
<a class="xref" href="mapping-boost.html" title="boost" rel="nofollow"><code class="literal">boost</code></a>
</p>
</td>
<td valign="top">
<p>映射字段级查询时提升。接受浮点数，默认值为<code class="literal">1.0</code>。</p>
</td>
</tr>
<tr>
<td valign="top">
<p>
<a class="xref" href="doc-values.html" title="doc_values" rel="nofollow"><code class="literal">doc_values</code></a>
</p>
</td>
<td valign="top">
<p>
是否应该以列跨度(column-stride)的方式将字段存储在磁盘上，以便以后用于排序、聚合或编写脚本? 接受<code class="literal">true</code>(默认) 或<code class="literal">false</code>。
</p>
</td>
</tr>
<tr>
<td valign="top">
<p>
<a class="xref" href="eager-global-ordinals.html" title="eager_global_ordinals" rel="nofollow"><code class="literal">eager_global_ordinals</code></a>
</p>
</td>
<td valign="top">
<p>
refresh 时应该急切地加载全局序号吗？

接受<code class="literal">true</code>或<code class="literal">false</code>(默认)。

对于常用于词项聚合的字段，启用此功能是个好主意。
</p>
</td>
</tr>
<tr>
<td valign="top">
<p>
<a class="xref" href="multi-fields.html" title="fields" rel="nofollow"><code class="literal">fields</code></a>
</p>
</td>
<td valign="top">
<p>多字段(multi-fields)允许出于不同目的以多种方式索引相同的字符串值，例如一个字段用于搜索，一个多字段用于排序和聚合。</p>
</td>
</tr>
<tr>
<td valign="top">
<p>
<a class="xref" href="ignore-above.html" title="ignore_above" rel="nofollow"><code class="literal">ignore_above</code></a>
</p>
</td>
<td valign="top">
<p>
不要索引任何长度超过此值的字符串。

默认值为<code class="literal">2147483647</code>，以便接受所有值。

但是请注意，默认的动态映射规则会创建一个子<code class="literal">keyword</code>字段，通过设置<code class="literal">ignore_above: 256</code>来覆盖此默认设置。
</p>
</td>
</tr>
<tr>
<td valign="top">
<p>
<a class="xref" href="mapping-index.html" title="index" rel="nofollow"><code class="literal">index</code></a>
</p>
</td>
<td valign="top">
<p>
该字段应该是可搜索的吗？接受<code class="literal">true</code> (默认) 和 <code class="literal">false</code>。
</p>
</td>
</tr>
<tr>
<td valign="top">
<p>
<a class="xref" href="index-options.html" title="index_options" rel="nofollow"><code class="literal">index_options</code></a>
</p>
</td>
<td valign="top">
<p>
出于评分目的，什么信息应该存储在索引中。

默认为<code class="literal">docs</code>，但也可以设置为<code class="literal">freqs</code>，以便在计算分数时考虑词项的频率。
</p>
</td>
</tr>
<tr>
<td valign="top">
<p>
<a class="xref" href="norms.html" title="norms" rel="nofollow"><code class="literal">norms</code></a>
</p>
</td>
<td valign="top">
<p>
在需要计算分数的查询时是否应考虑字段长度。

接受<code class="literal">true</code>或<code class="literal">false</code> (默认)。
</p>
</td>
</tr>
<tr>
<td valign="top">
<p>
<a class="xref" href="null-value.html" title="null_value" rel="nofollow"><code class="literal">null_value</code></a>
</p>
</td>
<td valign="top">
<p>
接受替换任何显式<code class="literal">null</code>值的字符串值。

默认值为<code class="literal">null</code>，这意味着该字段被视为缺失。
</p>
</td>
</tr>
<tr>
<td valign="top">
<p>
<a class="xref" href="mapping-store.html" title="store" rel="nofollow"><code class="literal">store</code></a>
</p>
</td>
<td valign="top">
<p>
字段值是否应该与<a class="xref" href="mapping-source-field.html" title="_source字段" rel="nofollow"><code class="literal">_source</code></a>字段分开存储和检索。

接受<code class="literal">true</code>或<code class="literal">false</code> (默认)。
</p>
</td>
</tr>
<tr>
<td valign="top">
<p>
<a class="xref" href="similarity.html" title="similarity" rel="nofollow"><code class="literal">similarity</code></a>
</p>
</td>
<td valign="top">
<p>
应该使用哪种评分或<em>相似度</em>算法。

默认为<code class="literal">BM25</code>。
</p>
</td>
</tr>
<tr>
<td valign="top">
<p>
<a class="xref" href="normalizer.html" title="normalizer" rel="nofollow"><code class="literal">normalizer</code></a>
</p>
</td>
<td valign="top">
<p>
如何在编制索引前预处理 keyword？

默认为<code class="literal">null</code>，表示保持 keyword 不变。
</p>
</td>
</tr>
<tr>
<td valign="top">
<p>
<code class="literal">split_queries_on_whitespace</code>
</p>
</td>
<td valign="top">
<p>
为该字段构建查询时，<a class="xref" href="full-text-queries.html" title="全文查询">全文查询</a>是否应该使用"空白"拆分输入。

接受<code class="literal">true</code>和<code class="literal">false</code> (默认)。
</p>
</td>
</tr>
<tr>
<td valign="top">
<p>
<a class="xref" href="mapping-field-meta.html" title="meta" rel="nofollow"><code class="literal">meta</code></a>
</p>
</td>
<td valign="top">
<p>字段的元数据。</p>
</td>
</tr>
</tbody>
</table>
</div>
<div class="note admon">
<div class="icon"></div>
<div class="admon_content">
<p>
从 2.x 版本导入的索引不支持<code class="literal">keyword</code>类型的字段。

相反，他们会尝试将<code class="literal">keyword</code>降级为<code class="literal">string</code>。

这允许你将现代映射与已过时但仍然被广泛使用的映射合并。

在升级到6.x版本之前，必须重新创建将被长期使用的索引，但是映射降级让你有机会按照自己的计划重新创建索引。
</p>
</div>
</div>
</div>

</div>
<div class="navfooter">
<span class="prev">
<a href="parent-join.html">« join(联结)数据类型</a>
</span>
<span class="next">
<a href="nested.html">nested(嵌套)数据类型 »</a>
</span>
</div>
</div>

                  <!-- end body -->
                        </div>
                        <div class="col-xs-12 col-sm-4 col-md-4" id="right_col">
                        
                        </div>
                    </div>
                </div>
            </section>
        </div>
    </section>
</div>
<script src="../static/cn.js"></script>
</body>
</html>